Redis实现秒杀功能

本文通过Redis的watch命令和事务机制,介绍了如何利用乐观锁实现秒杀系统的详细过程,对比了乐观锁与悲观锁在并发性能和资源消耗上的区别,并提供了相关Redis命令的解释。
摘要由CSDN通过智能技术生成

Redis使用watch完成秒杀抢购功能:

redis使用watch完成秒杀抢购功能:
使用redis中两个key完成秒杀抢购功能,mywatchkey用于存储抢购数量和mywatchlist用户存储抢购列表。它的优点如下:

1.首先选用内存数据库来抢购速度极快。
2. 速度快并发自然没不是问题。
3. 使用悲观锁,会迅速增加系统资源。
4. 比队列强的多,队列会使你的内存数据库资源瞬间爆棚。
5. 使用乐观锁,达到综合需求。

代码如下:

<?php 
header("content-type:text/html;charset=utf-8"); 
$redis = new redis(); 
$result = $redis->connect('10.10.10.119', 6379); 
$mywatchkey = $redis->get("mywatchkey"); 
$rob_total = 100;   //抢购数量
if($mywatchkey<$rob_total){ 
	$redis->watch("mywatchkey"); 
	$redis->multi(); 
	 //设置延迟,方便测试效果。 
	 sleep(5); 
	  //插入抢购数据
	  $redis->hSet("mywatchlist","user_id_".mt_rand(1, 9999),time());
	  $redis->set("mywatchkey",$mywatchkey+1); 
	  $rob_result = $redis->exec(); 
	   
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值